package cn.edu.anan.datastructure.line;

/**
 * 顺序栈：基于数组实现
 * @param <E>
 */
public class ArrayStack<E> {

    private Object[] items;
    private int count;// 计数器（统计栈内元素个数）
    private int n;// 栈大小

    public ArrayStack(int capacity){
        this.items = new Object[capacity];
        this.count = 0;
        this.n = capacity;
    }

    /**
     * 入栈操作
     */
    public boolean push(E e ){

        // 检查栈是否满
        if(count == n){
            return false;
        }

        // 将元素放入栈中
        items[count ++] = e;
        return true;
    }

    /**
     * 出栈操作
     */
    public E pop(){
        // 判断栈是否空
        if(count == 0){
            return null;
        }

        // 返回下标为count-1的元素,并且下标-1
        E e = (E)items[count - 1];
        count --;

        return e;
    }

    public int getCount() {
        return count;
    }

    public int getN() {
        return n;
    }
}
